#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int, int> P;
const int MAXN = 1e6 + 10;

int n;
int v[MAXN], sub[MAXN];

P f(int flag) {
    int ln = -1, rn = n;
    int lz = -1, rz = n;
    for (int i = 0; i < n - 1; i++) {
        if (sub[i] * flag > 0) {
            ln = i;
            break;
        }
    }
    for (int i = n - 2; i >= 0; i--) {
        if (sub[i] * flag > 0) {
            rn = i;
            break;
        }
    }
    for (int i = ln; i <= rn; i++) {
        if (sub[i] * flag < 0) {
            return P(-10, -10);
        }
    }
    while (ln - 1 >= 0 && sub[ln - 1] == 0)
        ln--;
    while (rn + 1 < n - 1 && sub[rn + 1] == 0)
        rn++;
    // cout << ln << endl;
    rn = rn + 1;
    if ((ln == 0 || (v[rn] - v[ln - 1]) * flag <= 0) &&
        (rn == n - 1 || (v[rn + 1] - v[ln]) * flag <= 0))
        return P(ln, rn);
    else
        return P(-10, -10);
}

int main(int argc, char const *argv[]) {
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> v[i];
    }
    for (int i = 0; i < n; i++) {
        sub[i] = v[i + 1] - v[i];
    }
    int flag = 1;
    for (int i = 0; i < n - 1; i++) {
        if (sub[i] < 0) {
            flag = 0;
        }
    }
    if (!flag) {
        P t1 = f(-1);
        if (t1 != P(-10, -10)) {
            cout << t1.first + 1 << " " << t1.second + 1 << endl;
        } else {
            cout << "impossible" << endl;
        }
    } else {
        cout << 1 << " " << 1 << endl;
    }

    return 0;
}

// 1 2 3 4 4 4 3 2 1 1 1 2
// 1 1 1 0 0 -1 -1 -1 0 0 1
// 0 0 -1 -1 -1 0 0
// 1 1 1 -1 -1 -1 1